Completed
Pull Request — master (#77)
by Sander
01:19
created

parseTLD.js ➔ parse_host   B

Complexity

Conditions 6
Paths 10

Size

Total Lines 32

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 6
c 2
b 0
f 0
nc 10
nop 1
dl 0
loc 32
rs 8.439
1
var parse_host = function(host){
2
    /** global: tlds */
3
    if(typeof tlds === "undefined"){
4
        throw new Error('No TLDs!');
5
    }
6
7
    var parts = host.split(".");
8
    var stack = "";
9
    var tld_level = 1; //unknown tld are 1st level
10
    for(var i=parts.length-1, part;i>=0;i--){
11
        part = parts[i];
12
        stack = stack ? part + "." + stack : part;
13
        if(!tlds[stack]){
14
            break;
15
        }
16
        tld_level = tlds[stack];
17
    }
18
    if(parts.length <= tld_level ) {
19
        return {
20
            tld: null,
21
            domain: host
22
        };
23
    } else {
24
        return  {
25
            tld     : parts.slice(-tld_level).join('.'),
26
            domain  : parts.slice(-tld_level-1).join('.'),
27
            sub     : parts.slice(0, (-tld_level-1)).join('.'),
28
        };
29
    }
30
31
32
};